#pragma once
#include <vector>
#include "Quaternion.h"
#include "MyMatrix.h"
#include "Vector3.h"
#include <GL\glut.h>


class Camara
{
private:
	// a note the the camaras default forward look is  -z 
	Quaternion _rotation;

	Vector3<float> _position;

	double _fieldOfView;
	double _aspectRatio;
	double _nearClip;
	double _farClip;

	std::vector<Vector3<float>> _model;

public:
	Camara(Vector3<float> position, double fieldOfView, double aspectR, double near, double far);
	~Camara(void);

	void Activate();
	void Run();
	
	void Draw();

	// methods to move the camra
	Vector3<float> Position(void);
	void Translate(Vector3<float> amount);
	void TranslateTo(Vector3<float> nPosition);

	//camra rotation
	void Rotation(Quaternion value);
	void Rotation(Vector3<float> forward);
	Quaternion Rotation(void);

	Vector3<float> Forward();

	void Rotate(Quaternion amount);
	void RotateGlobal(Quaternion amount);

	double& FieldOfView()
	{return _fieldOfView;}
	
	double& AspectRatio()
	{return _aspectRatio;}

	double& NearClip()
	{return _nearClip;}

	double& FarClip()
	{return _farClip;}

	

};

